스크립트로 공개 REST 요청을 처리할 수 있습니다. 외부 서비스에서 제목과 본문을 보내 노트를 만드는 등의 연동에 사용합니다.
다음은 백엔드 JavaScript 코드 노트예제입니다. 예시 비밀값을 그대로 공개 서비스에 사용하면 안 됩니다.
const {req, res} = api;
const {secret, title, content} = req.body;
if (req.method == 'POST' && secret === 'secret-password') {
// 노트를 저장할 상위 노트를 지정합니다.
// 이 코드 노트의 관계로 대상 상위 노트를 연결합니다.
// 간단한 예제에서는 노트 정보에서 확인한 고정 ID를 사용할 수도 있습니다.
const targetParentNoteId = api.currentNote.getRelationValue('targetNote');
const {note} = api.createTextNote(targetParentNoteId, title, content);
const notePojo = note.getPojo();
res.status(201).json(notePojo);
}
else {
res.send(400);
}#customRequestHandler=create-note 라벨과 저장할 위치를 가리키는 ~targetNote 관계를 지정합니다.
POST http://my.trilium.org/custom/create-note
Content-Type: application/json
{
"secret": "secret-password",
"title": "인사",
"content": "안녕하세요."
}/custom 아래 요청은 customRequestHandler 라벨이 있는 노트에서 처리기를 찾습니다. 라벨 값은 경로에 대응하는 정규식입니다. 찾은 스크립트에는 Express의 요청 객체와 응답 객체가 api.req와 api.res로 제공됩니다.
이 경로는 기본 인증을 자동으로 요구하지 않습니다. 처리기에서 인증을 구현해야 합니다. 예제는 POST 방식과 비밀값을 확인한 뒤 스크립트 API로 노트를 만듭니다.
파일만 제공하려면 customResourceProvider 라벨에 경로 정규식을 지정할 수 있습니다. 사용자 지정 리소스 제공을 참고하세요.
요청과 응답 객체의 기능은 Express 공식 문서에서 확인할 수 있습니다.
http://my.trilium.org/custom/notes/123마지막 숫자처럼 바뀌는 부분을 정규식으로 받을 수 있습니다.
notes/([0-9]+)괄호로 묶은 일치 결과는 api.pathParams에 들어갑니다.
const noteId = api.pathParams[0];?noteId=123 같은 쿼리 매개변수는 req.query.noteId로 읽습니다.